<?php
/**
 * Core_Validate_CheckAuth
 * 
 * @author naspeh
 * @version $Id: CheckAuth.php 659 2008-06-15 11:34:26Z naspeh $
 */
class Core_Validate_CheckAuth extends Zend_Validate_Abstract
{
    const BAD_AUTH = 'badAuth';
    const BLOCK_LOGIN = 'blockLogin';
    /**
     * Шаблоны сообщений
     *
     * @var array
     */     
    protected $_messageTemplates = array(
        self::BAD_AUTH => 'Неправильный логин или пароль',
        self::BLOCK_LOGIN => 'Вход запрещен, возможно ваш аккаунт заблокирован или неактивирован'
    );
    /**
     * Возвращает флаг успешной авторизации
     *
     * @param string $value
     * @param array $context
     * @return boolean
     */     
    public function isValid ($value, $context = null)
    {
        $value = (string) $value;
        if (isset($context['name']) && isset($context['password'])) {
            if (!empty($context['name']) && !empty($context['password'])) {
                $tableRoles = new Core_Table_Roles();
                if (null !== ($role = $tableRoles->fetchRow(array('name = ?' => $context['name'])))) {
                    if (!$role->is_login) {
                        $this->_error(self::BLOCK_LOGIN);
                        return false;
                    }
                    $result = Core_Auth::authenticate($context['name'], $context['password']);
                    if ($result->isValid()) {
                        return true;
                    }
                }
            }
        }
        $this->_error(self::BAD_AUTH);
        return false;
    }
}